home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Source Code / C / Applications / Python 1.3.3 / Python 133 68K / Mac / Demo / quicktime / VerySimplePlayer.py < prev   
Text File  |  1996-05-20  |  3KB  |  93 lines

  1. """VerySimplePlayer converted to python
  2.  
  3. Jack Jansen, CWI, December 1995
  4. """
  5.  
  6. import Qt
  7. import QuickTime
  8. import Qd
  9. import QuickDraw
  10. import Evt
  11. import Events
  12. import Win
  13. import Windows
  14. import macfs
  15. import sys
  16.  
  17. # XXXX maxbounds = (40, 40, 1000, 1000)
  18.  
  19. def main():
  20.     print 'hello world' # XXXX
  21.     # skip the toolbox initializations, already done
  22.     # XXXX Should use gestalt here to check for quicktime version
  23.     Qt.EnterMovies()
  24.     
  25.     # Get the movie file
  26.     fss, ok = macfs.StandardGetFile(QuickTime.MovieFileType)
  27.     if not ok:
  28.         sys.exit(0)
  29.         
  30.     # Open the window
  31.     bounds = (175, 75, 175+160, 75+120)
  32.     theWindow = Win.NewCWindow(bounds, fss.as_tuple()[2], 0, 0, -1, 1, 0)
  33.     # XXXX Needed? SetGWorld((CGrafPtr)theWindow, nil)
  34.     Qd.SetPort(theWindow)
  35.     
  36.     # Get the movie
  37.     theMovie = loadMovie(fss)
  38.     
  39.     # Relocate to (0, 0)
  40.     bounds = theMovie.GetMovieBox()
  41.     bounds = 0, 0, bounds[2]-bounds[0], bounds[3]-bounds[1]
  42.     theMovie.SetMovieBox(bounds)
  43.     
  44.     # Create a controller
  45.     theController = theMovie.NewMovieController(bounds, QuickTime.mcTopLeftMovie)
  46.     
  47.     # Get movie size and update window parameters
  48.     rv, bounds = theController.MCGetControllerBoundsRect()
  49.     theWindow.SizeWindow(bounds[2], bounds[3], 0)   # XXXX or [3] [2]?
  50.     Qt.AlignWindow(theWindow, 0)
  51.     theWindow.ShowWindow()
  52.     
  53.     # XXXX MCDoAction(theController, mcActionSetGrowBoxBounds, &maxBounds)
  54.     theController.MCDoAction(QuickTime.mcActionSetKeysEnabled, '1')
  55.     
  56.     # XXXX MCSetActionFilterWithRefCon(theController, movieControllerEventFilter, (long)theWindow)
  57.     
  58.     done = 0
  59.     while not done:
  60.         gotone, evt = Evt.WaitNextEvent(-1, 0)
  61.         (what, message, when, where, modifiers) = evt
  62. ##        print what, message, when, where, modifiers # XXXX
  63.         
  64.         if theController.MCIsPlayerEvent(evt):
  65.             continue
  66.             
  67.         if what == Events.mouseDown:
  68.             part, whichWindow = Win.FindWindow(where)
  69.             if part == Windows.inGoAway:
  70.                 done = whichWindow.TrackGoAway(where)
  71.             elif part == Windows.inDrag:
  72.                 Qt.DragAlignedWindow(whichWindow, where, (0, 0, 4000, 4000))
  73.         elif what == Events.updateEvt:
  74.             whichWindow = Win.WhichWindow(message)
  75.             if not whichWindow:
  76.                 # Probably the console window. Print something, hope it helps.
  77.                 print 'update'
  78.             else:
  79.                 Qd.SetPort(whichWindow)
  80.                 whichWindow.BeginUpdate()
  81.                 Qd.EraseRect(whichWindow.GetWindowPort().portRect)
  82.                 whichWindow.EndUpdate()
  83.             
  84. def loadMovie(theFile):
  85.     """Load a movie given an fsspec. Return the movie object"""
  86.     movieResRef = Qt.OpenMovieFile(theFile, 1)
  87.     movie, dummy = Qt.NewMovieFromFile(movieResRef, QuickTime.newMovieActive)
  88.     return movie
  89.     
  90. if __name__ == '__main__':
  91.     main()
  92.     
  93.